package Managers;

import java.util.ArrayList;

import org.apache.struts2.ServletActionContext;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;

import Entidades.Partido;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.opensymphony.xwork2.ActionSupport;

public class PartidosManager extends ActionSupport{
	private MyFileManager f_m;
	private JSONArray partidos;
	private Gson gson;
	private JSONObject partidosJson = null;
	private String filePath;
	private String datos_archivo;
	
	public PartidosManager(){
		f_m = new MyFileManager();
		gson = new GsonBuilder().disableHtmlEscaping().create();
		filePath = ServletActionContext.getServletContext().getRealPath("/");
		System.out.println("Dir " + filePath);
		datos_archivo = "";
		leerPartidos();
		
	}
	
	public JSONArray obtenerPartidos (){
		return partidos;
	}
	
	private void leerPartidos(){

		String partidos_string = f_m.read(filePath + getText("partidos.file_name"));
		System.out.println("Partidos lenght " + partidos_string.length() );
		if (partidos_string.length() > 0){
			try {
				partidosJson = (JSONObject)new JSONParser().parse(partidos_string);
			} catch (ParseException e) {
				e.printStackTrace();
			}
		}
		
		if (partidosJson == null){
		    
			// convert java object to JSON format,  
			// and returned as JSON formatted string  
			partidosJson = new JSONObject();
			
			ArrayList<Partido> partidos_array = new ArrayList<Partido>();
			partidosJson.put("partidos", partidos_array);
			
			String json = gson.toJson(partidosJson);
			f_m.write(json,filePath + getText("partidos.file_name"),false);
			partidos = new JSONArray();
		}else{			
			partidos = (JSONArray) partidosJson.get("partidos");
		}
		
		
	}
	
	public boolean agregarPartido(Partido  p){
		p.setId(partidos.size()+1);
		partidosJson = new JSONObject();
		partidos.add(gson.toJson(p));
		partidosJson.put("partidos", partidos);
		return f_m.write(gson.toJson(partidosJson),filePath + getText("partidos.file_name"),false);
	}
	
	
}
